package com.newtouch.bxzs.policy.service;

import com.newtouch.bxzs.policy.model.bo.PreservationBO;
import com.newtouch.bxzs.policy.model.bo.family.*;
import com.newtouch.bxzs.policy.model.vo.*;
import com.newtouch.bxzs.policy.model.vo.family.*;

import java.util.List;


/**
 * 家庭单管理service层--保险
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/7 13:31</td>
 * <td>linhongxi</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author linhongxi
 * @version 1.0.0
 * @since 1.0.0
 */
public interface FamilyPolicyInsuranceService {

    /**
     * 根据保单号获取家庭单详情
     *
     * @param policyInfoVO 家庭单详情查询条件
     *
     * @return 家庭单详情
     */
    FamilyPolicyBO getFamilyPolicyInfoInsurance(PolicyInfoVO policyInfoVO);
    /**
     * 根据保单号获取保全列表
     *
     * @param policyInfoPageVO 家庭单详情-保全列表查询条件
     *
     * @return 家庭单详情-保全列表
     */
    List<PreservationBO> getFamilyPolicyPreservationInsurance(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据保单号获取理赔列表
     *
     * @param policyInfoPageVO 家庭单详情-理赔列表查询条件
     *
     * @return 家庭单详情-理赔列表
     */
    List<FamilyClaimsBO> getPolicyClaimsInsurance(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据保单号获取人员清单列表
     *
     * @param policyUserListVO 家庭单详情-人员清单列表查询条件
     *
     * @return 家庭单详情-人员清单列表
     */
    List<PolicyUserListBO> getFamilyPolicyUserListInsurance(PolicyUserListVO policyUserListVO);

    /**
     * 根据查询条件获取新契约进度列表
     *
     * @param familyPolicyNewContractVO 家庭单新契约进度列表查询条件
     *
     * @return 家庭单新契约进度列表
     */
    List<FamilyPolicyNewContractBO> getNewContractListByFamilyPolicyInsurance(FamilyPolicyNewContractVO familyPolicyNewContractVO);

    /**
     * 根据保单号获取新契约进度详情
     *
     * @param policyNewContractInfoVO 家庭单新契约进度详情查询条件
     *
     * @return 家庭单新契约进度详情
     */
    FamilyPolicyNewContractBO getNewContractInfoByFamilyPolicyInsurance(PolicyNewContractInfoVO policyNewContractInfoVO);

    /**
     * 根据保单号获取新契约进度详情页人员清单列表
     *
     * @param   familyPolicyNewContractInfoVO 家庭单新契约进度详情-人员清单列表查询条件
     *
     * @return 家庭单新契约进度详情-人员清单列表
     */
    List<PolicyUserListBO> getNewContractUserListByFamilyPolicyInsurance(FamilyPolicyNewContractInfoVO familyPolicyNewContractInfoVO);
    /**
     * 根据查询条件获取保全进度列表
     *
     * @param familyPreservationVO 家庭单保全进度列表查询条件
     *
     * @return 家庭单保全进度列表
     */
    List<FamilyPreservationProgressInfoBO> getPreservationListByFamilyPolicyInsurance(FamilyPreservationVO familyPreservationVO);
    /**
     * 根据保单号获取保全进度详情
     *
     * @param PreservationProgressInfoVO 家庭单保全进度详情查询条件
     *
     * @return 家庭单保全进度详情
     */
    FamilyPreservationProgressInfoBO getPreservationInfoByFamilyPolicyInsurance(PreservationProgressInfoVO PreservationProgressInfoVO);

    /**
     * 根据查询条件获取理赔进度列表
     *
     * @param familyClaimsVO 家庭单理赔进度列表查询条件
     *
     * @return 家庭单理赔进度列表
     */
    List<FamilyClaimsBO> getClaimsProgressListByFamilyPolicyInsurance(FamilyClaimsVO familyClaimsVO);

    /**
     * 根据查询条件获取满期保单列表
     *
     * @param familyExpirationPolicyVO 家庭单满期列表查询条件
     *
     * @return 家庭单满期列表
     */
    List<FamilyExpirationPolicyBO> getExpirationPolicyListByFamilyPolicyInsurance(FamilyExpirationPolicyVO familyExpirationPolicyVO);

    /**
     * 根据查询条件获取续期保单列表
     *
     * @param familyRenewalPolicyVO 家庭单续期列表查询条件
     *
     * @return 家庭单续期列表
     */
    List<FamilyRenewalPolicyBO> getRenewalPolicyListByFamilyPolicyInsurance(FamilyRenewalPolicyVO familyRenewalPolicyVO);

}
